GitHubActionsでskip ciがコミットメッセージに含まれる時はジョブをスキップする設定
無いなら自分で作る
設定
こんな感じの設定を書く
code:.github/workflows/main.yml
name: test
on:
push:
jobs:
skip:
runs-on: ubuntu-latest
steps:
- run: echo "Skip job"
before:
runs-on: ubuntu-latest
if: "! contains(github.event.head_commit.message, 'skip ci')" steps:
build1:
runs-on: ubuntu-latest
needs: before
steps:
- uses: actions/checkout@v1
run: echo build job 1
build2:
runs-on: ubuntu-latest
needs: before
steps:
- uses: actions/checkout@v1
run: echo build job 2
設定の解説
肝はskipジョブとbeforeジョブとneeds: before
beforeジョブでコミットメッセージに[skip ci]が含まれる時はジョブ自体を起動しない
if: "! contains(github.event.head_commit.message, '[skip ci]')"
[skip ci]の部分をWIPとかに変えたら、それがスキップのトリガーになる
お好きにどうぞ
build1ジョブとbuild2ジョブにはneeds: beforeをセット
beforeジョブがパスした後にジョブが走る、という指定
ジョブに依存関係をもたせる
beforeジョブが正常終了したら、上記2つのジョブが並列に起動する
beforeが起動しなかったらこれらのジョブも起動しない(スキップされる)
skipジョブは何もしないけれど必要
ワークフローがbeforeジョブしか実行しない時にbeforeジョブがスキップされるとワークフローが失敗した扱いになる
メールにいちいち失敗通知が届いてうざい
常に成功するジョブを最低1つは動かすことで回避する
私感
標準で[skip ci]機能を提供してほしい
とはいえユーザが独自に設定できて柔軟性をもたせられるのでコレはコレでありかも